<?php
class AdmingroupAction extends AdminAction{
	//管理组


	//列表页
	public function index(){
		$role=M('Role');
		$list=$role->select();
		$j=count($list);
		for($i=0;$i<$j;$i++){
			$list[$i]['statusname']=($list[$i]['status']=='0')?'禁用':'启用';
		}

		$this->list=$list;
		$this->display();
	}
	//状态修改
	public function status(){
		$role=M('Role');
		$data['id']=$_GET['id'];
		$data['status']=$_GET['status']==1?0:1;
		$res=$role->save($data);
		if($res){
			$this->success('状态已变更');
		}else{
			$this->error('修改失败');
		}
	}

	//添加组
	public function add(){
		$this->display();
	}
	public function adding(){
		$role=M('Role');
		$res=$role->add($_POST);
		if($res){
			$this->success('添加成功','index');
		}else{
			$this->error('添加失败');
		}
	}

	//编辑组
	public function edit(){
		$role=M('role');
		$list=$role->find($_GET['id']);
		//dump($list);
		$this->assign('list',$list);
		$this->display();
	}
	public function editing(){
		$role=M('role');
		$res=$role->save($_POST);
		if($res){
			$this->success('编辑成功','index');
		}else{
			$this->error('编辑失败');
		}
	}

	//权限分配
	public function permission(){
		$access=M('Access');

		$res=$access->where('role_id='.$_GET['id'])->field('node_id')->select();	//取出节点权限ID
		$nodeids=array();
		for($i=0;$i<count($res);$i++){
			$nodeids[$i]=$res[$i]['node_id'];
		}
		$form=$this->node($nodeids);
		$this->form=$form;
		$this->display();

	}
	//权限分配提交
	public function access(){
		$access=M('Access');
		$node=M('Node');

		$data=array();

		//拼装表单数据到$data
		$j=count($_POST['node_id']);
		for($i=0;$i<$j;$i++){
			$data[$i]['role_id']=$_POST['role_id'];
			$data[$i]['node_id']=$_POST['node_id'][$i];
			$res=$node->where('id='.$_POST['node_id'][$i])->find();
			$data[$i]['level']=$res['level'];
			$data[$i]['pid']=$res['pid'];
		}


		//将提交POST的role_id和node_id拼成数组
		$res=$access->select();
		$j=count($data);
		for($i=0;$i<$j;$i++){
			$role_ids[$i]=$data[$i]['role_id'];
			$node_ids[$i]=$data[$i]['node_id'];
		}

		//如果库中的数据不在提交的表单中则在库中删除
		$j=count($res);
		for($i=0;$i<$j;$i++){
			if(in_array($res[$i]['role_id'],$role_ids) && !in_array($res[$i]['node_id'],$node_ids)){
				$del=$access->where('role_id='.$res[$i]['role_id'].' and node_id='.$res[$i]['node_id'])->delete();
			}
		}

		//遍历提交的数据
		foreach($data as $k){	
			//如果提交数据里库中没有则添加
			$find=$access->where('role_id='.$k['role_id'].' and node_id='.$k['node_id'])->find();
			if(!$find){
				$add=$access->add($k);
			}
		};

		if($del || $add){
			$this->success('提交成功','index');
		}else{
			$this->error('提交失败');
		}

	}


	//输出节点列表
	protected function node($nodeids){
		$node=M('Node');	//节点表

		$html=null;

		$result=$node->select();	//取出所有节点数据
		$j=count($result);	//获得数据总数

		for($i=0;$i<$j;$i++){

			if($nodeids){
				$checked=(in_array($result[$i]['id'],$nodeids))?' checked':null;
			}

			if($result[$i]['level']==1){
				$html.='<div class="node"><li><input class="checkbox" type="Checkbox" name="node_id[]" value="'.$result[$i]['id'].'"'.$checked.'/>'.$result[$i]['title'].'项目入口</li></div><div class="clear"></div>';
			}

			if($result[$i]['level']==2){
				if($nodeids){
					$checked=(in_array($result[$i]['id'],$nodeids))?' checked':null;
				}
				$html.='<div class="node"><li><input class="checkbox" type="Checkbox" name="node_id[]" value="'.$result[$i]['id'].'"'.$checked.'/>'.$result[$i]['title'].'模块管理</li>';

				foreach($result as $k=>$v){
				if($nodeids){
					$checked=(in_array($v['id'],$nodeids))?' checked':null;
				}
					if($v['pid']==$result[$i]['id']){
						$html.='<li><input class="checkbox" type="Checkbox" name="node_id[]" value="'.$v['id'].'"'.$checked.'>'.$v['title'].'</li>';
					}

				}

				$html.='</div>';
				$html.='<div class="clear"></div>';
			}
			
		}

		return $html;
	}




}